package com.weyoung.admin.controller;
import com.weyoung.admin.dto.req.*;
import com.weyoung.admin.service.DisplayService;
import com.weyoung.admin.service.UserService;
import com.weyoung.common.consatant.result.Result;
import com.weyoung.common.model.entity.UserDO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;


/**
 *Web端 - 大屏显示接口管理
 */
@RestController
@RequestMapping("admin/display")
@Tag(name = "Web端-大屏显示接口")
@Slf4j
@RequiredArgsConstructor
public class DisplayController {
    private final DisplayService displayService;

//    /**
//     * 获取所有用户列表
//     * @return Result
//     */
//    @GetMapping("/list")
//    @Operation(summary = "获取所有用户列表")
//    public Result<List<UserDO>> list() {
//        List<UserDO> users = displayService.list();
//        return Result.success(users);
//    }


    /**
     * 获取用户总数
     * @return Result
     */
    @GetMapping("/count")
    @Operation(summary = "获取用户总数")
    public Result<Long> getCount() {
        Long count = displayService.count();
        return Result.success(count);
    }


    /**
     * 获取从当前日期往前12个月的每月新增人数
     * @return Result
     */
    @GetMapping("/count/limit")
    @Operation(summary = "获取从当前日期往前12个月的每月新增人数")
    public Result<List<GroupMonthDTO>> getCountLimit() {
        List<GroupMonthDTO> list = displayService.getGroupMonths();
        return Result.success(list);
    }

    /**
     * 获取年龄段用户
     * @return Result
     */
    @GetMapping("/age/limit")
    @Operation(summary = "获取分组年龄段用户数量")
    public Result<List<GroupAgeDTO>> getAgeLimit() {
        List<GroupAgeDTO> list = displayService.getGroupAges();
        return Result.success(list);
    }



//    /**
//     * 根据用户省份获取地区用户数量
//     * @return Result
//     */
//    @GetMapping("/address/count")
//    @Operation(summary = "根据用户省份获取地区用户数量")
//    public Result<Long> getAddressCount(@RequestParam(name = "address") String address) {
//        Long count = displayService.getCountByAddress(address);
//        return Result.success(count);
//    }

    /**
     * 根据省份分组获取地区用户数量
     * @return Result
     */
    @GetMapping("/addressGroup/UserCount")
    @Operation(summary = "根据省份分组获取地区用户数量")
    public Result<List<GroupUserDTO>> getAddressGroupUserCount() {
        List<GroupUserDTO> list = displayService.getAddressGroupUserCount();
        return Result.success(list);
    }


    /**
     * 根据省份分组获取地区家族数量
     * @return Result
     */
    @GetMapping("/addressGroup/FamilyCount")
    @Operation(summary = "根据省份分组获取地区家族数量")
    public Result<List<GroupFamilyDTO>> getAddressGroupFamilyCount() {
        List<GroupFamilyDTO> list = displayService.getAddressGroupFamilyCount();
        return Result.success(list);
    }

    /**
     * 获取家族总数
     * @return Result
     */
    @GetMapping("/family/count")
    @Operation(summary = "获取家族总数")
    public Result<Long> getFamilyCount() {
        Long count = displayService.getFamilyCount();
        return Result.success(count);
    }


//    /**
//     * 获取地区家族数量
//     * @return Result
//     */
//    @GetMapping("/family/address/count")
//    @Operation(summary = "获取地区家族数量")
//    public Result<Long> getFamilyCountByAddress(@RequestParam(name = "family_address") String family_address) {
//        Long count = displayService.getFamilyCountByAddress(family_address);
//        return Result.success(count);
//    }

    /**
     * 获取覆盖地区数量
     * @return Result
     */
    @GetMapping("/AreasCovered")
    @Operation(summary = "获取覆盖地区数量")
    public Result<Long> AreasCovered() {
        //假数据
        return Result.success(117L);
    }


//    /**
//     * 获取男性用户数量
//     * @return Result
//     */
//    @GetMapping("/getManCount")
//    @Operation(summary = "获取男性用户数量")
//    public Result<Long> getManCount() {
//        Long count = displayService.getManCount();
//        return Result.success(count);
//    }
//
//
//
//    /**
//     * 获取女性用户数量
//     * @return Result
//     */
//    @GetMapping("/getWomanCount")
//    @Operation(summary = "获取女性用户数量")
//    public Result<Long> getWomanCount() {
//        Long count = displayService.getWomanCount();
//        return Result.success(count);
//    }

    /**
     *获取性别用户数量
     */
    @GetMapping("/getGenderCount")
    @Operation(summary = "获取性别用户数量")
    public Result<List<GroupGenderDTO>> getGenderCount() {
        List<GroupGenderDTO> list = displayService.getGenderCount();
        return Result.success(list);
    }

    /**
     * 查询家族人数排名前十的家族信息
     *
     */
    @GetMapping("/getFamilyRank")
    @Operation(summary = "查询家族人数排名前十的家族信息")
    public Result<List<FamilySortDTO>> getFamilyRank() {
        List<FamilySortDTO> list = displayService.getFamilyRank();
        return Result.success(list);
    }

}
